/**
 *====================================================
 * 文件名称: FinanceClaimActionApi.java
 * 修订记录：
 * No    日期				作者(操作:具体内容)
 * 1.    2015年12月9日			chenxy(创建:创建文件)
 *====================================================
 * 类描述：(说明未实现或其它不应生成javadoc的内容)
 */
package com.yuexunit.finance.project.action.v1;

import java.math.BigDecimal;

import com.yuexunit.finance.context.FinVersion1;
import com.yuexunit.finance.project.action.v1.model.ClaimAcceptance;
import com.yuexunit.finance.project.action.v1.model.ClaimAssessment;
import com.yuexunit.finance.project.action.v1.model.ClaimCorrective;
import com.yuexunit.finance.project.action.v1.model.ClaimHandle;
import com.yuexunit.finance.project.action.v1.model.ClaimMaterial;
import com.yuexunit.finance.project.action.v1.model.ClaimReportCase;
import com.yuexunit.finance.project.action.v1.model.ClaimSurvey;
import com.yuexunit.finance.project.action.v1.model.input.ClaimParams;
import com.yuexunit.finance.project.action.v1.model.input.ClaimSettlementParams;
import com.yuexunit.finance.project.action.v1.model.output.ClaimAcceptanceDetail;
import com.yuexunit.finance.project.action.v1.model.output.ClaimAssessmentDetail;
import com.yuexunit.finance.project.action.v1.model.output.ClaimCorrectiveDetail;
import com.yuexunit.finance.project.action.v1.model.output.ClaimDetail;
import com.yuexunit.finance.project.action.v1.model.output.ClaimHandleDetail;
import com.yuexunit.finance.project.action.v1.model.output.ClaimLineInfo;
import com.yuexunit.finance.project.action.v1.model.output.ClaimMaterialDetail;
import com.yuexunit.finance.project.action.v1.model.output.ClaimReportCaseDetail;
import com.yuexunit.finance.project.action.v1.model.output.ClaimSettlementDetail;
import com.yuexunit.finance.project.action.v1.model.output.ClaimSurveyDetail;
import com.yuexunit.page.PageCriteria;
import com.yuexunit.page.PageList;
import com.yuexunit.web.annotation.Action;
import com.yuexunit.web.annotation.Parameter;
import com.yuexunit.web.annotation.Permission;

/** 
* @ClassName: FinanceClaimActionApi 
* @Description: TODO(这里用一句话描述这个类的作用) 
* @author chenxy 
* @date 2015年12月9日 下午9:52:37  
*/
public interface FinanceClaimActionApi {

	@Permission
	@Action(version = FinVersion1.class, description = "创建异常索赔单")
	@Parameter(name = "claimId", description = "索赔单ID")
	public String createClaim(ClaimParams params);

	@Permission
	@Action(version = FinVersion1.class, description = "修改异常索赔单")
	public void updateClaim(
			@Parameter(name = "claimId", description = "索赔单ID") Long claimId,
			@Parameter(name = "claimDate", description = "理赔时间") String claimDate,
			@Parameter(name = "claimRemark", description = "索赔备注") String claimRemark,
			@Parameter(name = "insuranceCoverageId", description = "理赔险种ID,注意不是险种ID") Long[] claimCoverageId,
			@Parameter(name = "claimAmount", description = "索赔金额") BigDecimal[] claimAmount
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "异常索赔销案")
	public void closeClaim(
			@Parameter(name = "claimId", description = "索赔单ID") Long claimId,
			@Parameter(name = "windupReson", description = "销案原因") Integer windupReson,
			@Parameter(name = "windupRemark", description = "销案备注") String windupRemark
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "异常索赔结案")
	public void finishedClaim(
			@Parameter(name = "claimId", description = "索赔单ID") Long claimId,
			@Parameter(name = "windupReson", description = "结案原因") Integer windupReson,
			@Parameter(name = "windupRemark", description = "结案备注") String windupRemark
	);
	

	@Permission
	@Action(version = FinVersion1.class, description = "添加报案信息-1")
	@Parameter(name = "reportCaseId", description = "报案信息ID")
	public String createClaimReportCase(ClaimReportCase params);

	@Permission
	@Action(version = FinVersion1.class, description = "确认报案信息")
	public void consentClaimReportCase(
			@Parameter(name = "reportCaseId", description = "报案信息ID") Long reportCaseId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "获取报案信息详情")
	public ClaimReportCaseDetail inquireClaimReportCase(
			@Parameter(name = "reportCaseId", description = "报案信息ID") Long reportCaseId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "添加资料准备信息-2")
	@Parameter(name = "claimMaterialId", description = "资料准备ID")
	public String createClaimMaterial(ClaimMaterial params);

	@Permission
	@Action(version = FinVersion1.class, description = "确认资料准备信息")
	public void consentClaimMaterial(
			@Parameter(name = "claimMaterialId", description = "资料准备ID") Long claimMaterialId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "获取资料准备详情")
	public ClaimMaterialDetail inquireClaimMaterial(
			@Parameter(name = "claimMaterialId", description = "资料准备ID") Long claimMaterialId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "添加报案受理信息-3")
	@Parameter(name = "claimAcceptanceId", description = "报案受理ID")
	public String createClaimAcceptance(ClaimAcceptance params);
	
	@Permission
	@Action(version = FinVersion1.class, description = "确认报案受理信息")
	public void consentClaimAcceptance(
			@Parameter(name = "claimAcceptanceId", description = "报案受理ID") Long claimAcceptanceId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "获取报案受理详情")
	public ClaimAcceptanceDetail inquireClaimAcceptance(
			@Parameter(name = "claimAcceptanceId", description = "报案受理ID") Long claimAcceptanceId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "添加调查阶段信息-4")
	@Parameter(name = "claimSurveyId", description = "调查阶段ID")
	public String createClaimSurvey(ClaimSurvey params);
	
	@Permission
	@Action(version = FinVersion1.class, description = "确认调查阶段信息")
	public void consentClaimSurvey(
			@Parameter(name = "claimSurveyId", description = "调查阶段ID") Long claimSurveyId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "获取调查阶段详情")
	public ClaimSurveyDetail inquireClaimSurvey(
			@Parameter(name = "claimSurveyId", description = "调查阶段ID") Long claimSurveyId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "添加评估阶段信息-5")
	@Parameter(name = "claimAssessmentId", description = "评估阶段ID")
	public String createClaimAssessment(ClaimAssessment params);
	
	@Permission
	@Action(version = FinVersion1.class, description = "确认评估阶段信息")
	public void consentClaimAssessment(
			@Parameter(name = "claimAssessmentId", description = "评估阶段ID") Long claimAssessmentId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "获取评估阶段详情")
	public ClaimAssessmentDetail inquireClaimAssessment(
			@Parameter(name = "claimAssessmentId", description = "评估阶段ID") Long claimAssessmentId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "添加法院处理信息-6")
	@Parameter(name = "claimHandleId", description = "法院处理ID")
	public String createClaimHandle(ClaimHandle params);
	
	@Permission
	@Action(version = FinVersion1.class, description = "确认法院处理信息")
	public void consentClaimHandle(
			@Parameter(name = "claimHandleId", description = "法院处理ID") Long claimHandleId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "获取法院处理详情")
	public ClaimHandleDetail inquireClaimHandle(
			@Parameter(name = "claimHandleId", description = "法院处理ID") Long claimHandleId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "添加赔付信息-7")
	@Parameter(name = "claimSettlementId", description = "赔付信息ID")
	public String createClaimSettlement(ClaimSettlementParams params);
	
	@Permission
	@Action(version = FinVersion1.class, description = "确认赔付信息")
	public void consentClaimSettlement(
			@Parameter(name = "claimSettlementId", description = "赔付信息ID") Long claimSettlementId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "获取赔付信息详情")
	public ClaimSettlementDetail inquireClaimSettlement(
			@Parameter(name = "claimSettlementId", description = "赔付信息ID") Long claimSettlementId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "添加整改信息-8")
	@Parameter(name = "claimCorrectiveId", description = "整改信息ID")
	public String createClaimCorrective(ClaimCorrective params);
	
	@Permission
	@Action(version = FinVersion1.class, description = "确认整改信息")
	public void consentClaimCorrective(
			@Parameter(name = "claimCorrectiveId", description = "整改信息ID") Long claimCorrectiveId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "获取整改信息详情")
	public ClaimCorrectiveDetail inquireClaimCorrective(
			@Parameter(name = "claimCorrectiveId", description = "整改信息ID") Long claimCorrectiveId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "获取异常索赔单明细")
	public ClaimDetail inquireClaimDetail(
			@Parameter(name = "claimId", description = "索赔单ID") Long claimId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "查询索赔单列表")
	public PageList<ClaimLineInfo> inquireClaimPageList(
			@Parameter(name = "financeId", description = "融资信息ID", nullable = true) Long financeId,
			@Parameter(name = "dateBegin", description = "生成日期-开始", nullable = true) String dateBegin,
			@Parameter(name = "dateEnd", description = "生成日期-结束", nullable = true) String dateEnd,
			@Parameter(name = "claimNumber", description = "理赔单号", nullable = true) String claimNumber,
			@Parameter(name = "abnormalState", description = "异常类型 0:未知/1:货损/2:丢失", nullable = true) Integer abnormalState,
			@Parameter(name = "insuranceCompany", description = "保险公司", nullable = true) String insuranceCompany,
			@Parameter(name = "claimProcess", description = "理赔阶段 0:未知/1:报案阶段/2:资料准备/3:报案受理/4:调查阶段/5:评估阶段/6:法院处理/7:赔付阶段/8:整改阶段/9:结案销案", nullable = true) Integer claimProcess,
			@Parameter(name = "claimState", description = "理赔状态 1:理赔中/2:已销案/3:已结案", nullable = true) Integer claimState,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);

}
